home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 30
/
Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso
/
Aminet
/
dev
/
misc
/
IOBlixDevKitR2.lha
/
IOBlixDevKit
/
C
/
include
/
ioblix
/
parport.h
< prev
next >
Wrap
C/C++ Source or Header
|
1999-02-01
|
5KB
|
149 lines
/*
** $VER: ioblix/parport.h 37.1 (3.1.99)
**
** include file for access to IOBlix parallel ports
**
** (C) Copyright 1998,1999 Thore Böckelmann
** All Rights Reserved.
*/
#ifndef IOBLIX_PARPORT_H
#define IOBLIX_PARPORT_H 1
/* if ParPort on a ZorroII and a clock port should NOT be accessed within */
/* one program then you can #define IOBLIX12 to build two different programs */
/* from one source without any modifications. Else you have two different */
/* definitions for both ports */
#ifndef IOBLIX12
struct ParPort {
volatile UBYTE data;
volatile UBYTE pad1[15];
volatile UBYTE status;
volatile UBYTE pad2[15];
volatile UBYTE control;
volatile UBYTE pad3[15];
volatile UBYTE epp_aport;
volatile UBYTE pad4[15];
volatile UBYTE epp_dport1;
volatile UBYTE pad5[15];
volatile UBYTE epp_dport2;
volatile UBYTE pad6[15];
volatile UBYTE epp_dport3;
volatile UBYTE pad7[15];
volatile UBYTE epp_dport4;
volatile UBYTE pad8[15];
volatile UBYTE config_a;
volatile UBYTE pad9[15];
volatile UBYTE config_b;
volatile UBYTE pada[15];
volatile UBYTE econtrol;
volatile UBYTE padb[15];
UBYTE padx[0x1000-176];
};
struct ParPort12 {
volatile UBYTE pad0;
volatile UBYTE data;
volatile UBYTE pad1[3];
volatile UBYTE status;
volatile UBYTE pad2[3];
volatile UBYTE control;
volatile UBYTE pad3[3];
volatile UBYTE epp_aport;
volatile UBYTE pad4[3];
volatile UBYTE epp_dport1;
volatile UBYTE pad5[3];
volatile UBYTE epp_dport2;
volatile UBYTE pad6[3];
volatile UBYTE epp_dport3;
volatile UBYTE pad7[3];
volatile UBYTE epp_dport4;
volatile UBYTE pad8[3];
volatile UBYTE config_a;
volatile UBYTE pad9[3];
volatile UBYTE config_b;
volatile UBYTE pada[3];
volatile UBYTE econtrol;
};
#else
struct ParPort {
volatile UBYTE pad0;
volatile UBYTE data;
volatile UBYTE pad1[3];
volatile UBYTE status;
volatile UBYTE pad2[3];
volatile UBYTE control;
volatile UBYTE pad3[3];
volatile UBYTE epp_aport;
volatile UBYTE pad4[3];
volatile UBYTE epp_dport1;
volatile UBYTE pad5[3];
volatile UBYTE epp_dport2;
volatile UBYTE pad6[3];
volatile UBYTE epp_dport3;
volatile UBYTE pad7[3];
volatile UBYTE epp_dport4;
volatile UBYTE pad8[3];
volatile UBYTE config_a;
volatile UBYTE pad9[3];
volatile UBYTE config_b;
volatile UBYTE pada[3];
volatile UBYTE econtrol;
};
#endif
#define cfifo config_a
#define ecp_afifo data
#define ecp_dfifo config_a
#define tfifo config_a
/* ParPort.control */
#define PARPORT_CONTROL_STROBE 0x01
#define PARPORT_CONTROL_AUTOFD 0x02
#define PARPORT_CONTROL_INIT 0x04
#define PARPORT_CONTROL_SELECT 0x08
#define PARPORT_CONTROL_ACKINT 0x10
#define PARPORT_CONTROL_DIRECTION 0x20
/* ParPort.status */
#define PARPORT_STATUS_EPP_TIMEOUT 0x01
#define PARPORT_STATUS_ERROR 0x08
#define PARPORT_STATUS_SELECT 0x10
#define PARPORT_STATUS_PAPEROUT 0x20
#define PARPORT_STATUS_ACK 0x40
#define PARPORT_STATUS_BUSY 0x80
/* ParPort.econtrol */
#define PARPORT_ECONTROL_FAULT 0x10
#define PARPORT_ECONTROL_DMA 0x08
#define PARPORT_ECONTROL_INT 0x04
#define PARPORT_ECONTROL_FIFO_F 0x02
#define PARPORT_ECONTROL_FIFO_E 0x01
#define PARPORT_ECONTROL_SPP 0x00
#define PARPORT_ECONTROL_PS2 0x20
#define PARPORT_ECONTROL_PPF 0x40
#define PARPORT_ECONTROL_ECP 0x60
#define PARPORT_ECONTROL_EPP 0x80
#define PARPORT_ECONTROL_TST 0xc0
#define PARPORT_ECONTROL_CFG 0xe0
#define PARPORT_ECONTROL_MODE_MASK 0xe0
/* structure returned by AllocECPInfo() */
/* all fields are READ-ONLY */
struct ECPProbeInformation {
BOOL epi_IsIEEE1284Compatible; /* device is IEEE1284 compatible? */
UBYTE epi_Pad0;
UBYTE *epi_FullInformation; /* complete information string */
UBYTE *epi_Manufacturer; /* device manufacturer */
UBYTE *epi_Model; /* device model */
UBYTE *epi_Class; /* device class */
UBYTE *epi_CommandSet; /* supported command sets */
UBYTE *epi_Description; /* device description */
};
#endif /* IOBLIX_PARPORT_H */